/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package grest.view;

import grest.controller.CntrlrBtnEstadisticas;
import grest.controller.CntrlrTabsEstadisticas;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.text.MaskFormatter;


/**
 *
 * @author Agustin
 */
public class VistaEstadisticas extends JPanel{
    
    private JPanel pnlPrincipal = new JPanel();
    private JTabbedPane tabbedPane = new JTabbedPane();
    ////////
    private JComponent ReservasClientes = new JPanel();
    private JTable tblReservasClientes = new JTable();
    private JScrollPane scReservasCLientes = new JScrollPane(tblReservasClientes);
    ////////
    private JComponent EstadoReservas = new JPanel();
    private JLabel lblTotales = new JLabel("Reservas Totales :");
    private JLabel lblConcretadas = new JLabel("Reservas concretadas :");
    private JLabel lblCanceladas = new JLabel("Reservas canceladas :");
    private JLabel lblValorTotales = new JLabel("");
    private JLabel lblValorConcretadas = new JLabel("");
    private JLabel lblValorCanceladas = new JLabel("");
    ////////
    private JComponent PedidoProductos = new JPanel();
    private JTable tblPedidoProductos = new JTable();
    private JScrollPane scPedidoProductos = new JScrollPane(tblPedidoProductos);
    ///////
    private JComponent MontoTotal = new JPanel();
    private JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
    private JPanel pnlSuperior = new JPanel();
    private JPanel pnlAux = new JPanel();
    private JPanel pnlInferior = new JPanel();
    private JLabel lblFechaInicio = new JLabel("Fecha Inicio (yyyy-mm-dd):");
    private JLabel lblFechaFin = new JLabel("Fecha Fin (yyyy-mm-dd) : ");
    private JLabel lblSinResult = new JLabel("No se obtuvieron resultados en los valores especificados");
    private JButton btnResultados = new JButton("Obtener resultados");
    private JTable tblMontoTotal = new JTable();
    private JScrollPane scMontoTotal = new JScrollPane(tblMontoTotal);
    private JFormattedTextField txtFechaInicio;
    private JFormattedTextField txtFechaFin;

 
    /////
    
    public VistaEstadisticas(){
    super(new GridLayout(1, 1));
    txtFechaInicio =  new JFormattedTextField(new SimpleDateFormat("yyyy-MM-dd"));
    txtFechaFin =  new JFormattedTextField(new SimpleDateFormat("yyyy-MM-dd"));
    txtFechaInicio.setValue(new Date());
    txtFechaFin.setValue(new Date());
       
        //tab1
        MontoTotal.setPreferredSize( new Dimension(100,100) );
        MontoTotal.setLayout( new BorderLayout(5,5) );
        MontoTotal.add(splitPane, BorderLayout.CENTER);
        MontoTotal.add(lblSinResult, BorderLayout.SOUTH);
        lblSinResult.setVisible(false);
        splitPane.setLeftComponent(pnlSuperior);
        splitPane.setRightComponent(pnlInferior);
        pnlSuperior.setLayout(new GridLayout(3,2));
        pnlSuperior.add(lblFechaInicio);
        pnlSuperior.add(txtFechaInicio);
        pnlSuperior.add(lblFechaFin);
        pnlSuperior.add(txtFechaFin);
        pnlSuperior.add(pnlAux);
        pnlSuperior.add(btnResultados);
        pnlInferior.add(scMontoTotal);
        //pnlDivisor.add(btnResultados);
       /* MontoTotal.add(scMontoTotal);
        pnlSuperior.add(pnlDerecho);*/
        tabbedPane.addTab( "Ventas por mozo" , MontoTotal );
        
        //tab2
        EstadoReservas.setPreferredSize( new Dimension(100,100) );
        EstadoReservas.setLayout( new GridLayout(3, 2) );
        EstadoReservas.add(lblTotales);
        EstadoReservas.add(lblValorTotales);
        EstadoReservas.add(lblConcretadas);
        EstadoReservas.add(lblValorConcretadas);
        EstadoReservas.add(lblCanceladas);
        EstadoReservas.add(lblValorCanceladas);
        tabbedPane.addTab( "Histórico Reservas" , EstadoReservas);

        //tab3
        PedidoProductos.setPreferredSize(new Dimension(100,100));
        PedidoProductos.setLayout( new BorderLayout() );
        PedidoProductos.add(scPedidoProductos);
        tabbedPane.addTab( "Productos mas pedidos" , PedidoProductos );

        //tab4
        ReservasClientes.setPreferredSize(new Dimension(100,100));
        ReservasClientes.setLayout( new BorderLayout());
        ReservasClientes.add(scReservasCLientes);
        tabbedPane.addTab( "Reservas por Cliente" , ReservasClientes );

        //
        this.add(tabbedPane,BorderLayout.CENTER);
        tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
        CntrlrTabsEstadisticas changeListener = new CntrlrTabsEstadisticas(this);
        CntrlrBtnEstadisticas buttonListener = new CntrlrBtnEstadisticas(this);
        tabbedPane.addChangeListener(changeListener);
        btnResultados.addActionListener(buttonListener);
        
    }   
    
     public JComponent getControls(String name){
        if(name.equals("tblReservasClientes")) return tblReservasClientes;
        else if(name.equals("tblPedidoProductos")) return tblPedidoProductos;
        else if(name.equals("tblMontoTotal")) return tblMontoTotal;
        else if(name.equals("lblValorTotales")) return lblValorTotales;
        else if(name.equals("lblValorConcretadas")) return lblValorConcretadas;
        else if(name.equals("lblValorCanceladas")) return lblValorCanceladas;
        else if(name.equals("txtFechaInicio")) return txtFechaInicio;
        else if(name.equals("txtFechaFin")) return txtFechaFin;
        else if(name.equals("btnResultados")) return btnResultados;
        else if(name.equals("lblSinResult")) return lblSinResult;
        else return null;
    }
     
     protected MaskFormatter createFormatter(String s) {
    MaskFormatter formatter = null;
    try {
        formatter = new MaskFormatter(s);
    } catch (java.text.ParseException exc) {
        System.err.println("formato erroneo " + exc.getMessage());
    }
    return formatter;
}
}